'use strict';

/* 
  Service，业务处理层，主要负责收集及对数据进行相应的运算处理，主要包括
  收集控制器请求数据，数据有效性验证，运算，请求数据模型，接受数据模型相应消息，相应结果值控制器
 */
const { Service } = require('egg');

class GoodsTypesService extends Service {
  
  /* 查询商品类型列表 */
  async getlist ({page,pageSize,filter}) {
    const { ctx } = this;
    const condition = {
      offset: (page-1)*pageSize || 0,
      limit: +pageSize || 20,
      where: filter
    }
    const getModelList = await ctx.model.GoodsTypes.queryList(condition)
    return { pageSize, page, ...getModelList }
  }

  /* 添加新的商品类型 */
  async addOne(data) {
    const { created_use_uuid, name, intro, parent_type_uuid, deleted } = data;
    if(!name) {throw new Error('name can not be null')};
    if(intro && intro.length > 100) {throw new Error('intro can not be long more than 100 chars')}; ;
    const newOne = { created_use_uuid, name, intro, parent_type_uuid, deleted }
    const addOne = await this.ctx.model.GoodsTypes.saveNew(newOne);
    return addOne;
  }

  /* 切换商品状态 */
  async toggleGoodsTypeStatus(data) {
    const { ctx } = this;
    const { uuid, status } = data;

  }
}

module.exports = GoodsTypesService;